Suurtest andmetabelitest või maatriksitest on n-ö silmaga peale vaadates raske ülevaadet saada. Üks võimalus nende visualiseerimiseks on heat map, kus sarnaselt geograafilisele soojuskaardile kasutatakse värve, et näidata maatriksi elementide väärtuseid.
Tutvume järgnevalt paketiga pheatmap (tähendusega pretty heatmaps), mille autoriks on Raivo Kolde (TÜ statistika vilistlane). Funktsiooni pheatmap() võib kasutada muuhulgas järgmiste visualisatsioonide jaoks:
Sisuliselt tähendab klasterdamine, et sarnased read või veerud paigutatakse lähestikku. See võimaldab näha andmetes mustreid, mis muidu jääks võib-olla märkamata. Et klasterdamisest täpsemalt teada saada, vaata Stanfordi videot hierarhilise klasterdamise kohta.
# Koostame näidismaatriksi, mis sisaldaks teatud mustrit
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
# Kui anname maatriksi ridadele/veergudele nimed, näeme neid heatmapil
colnames(test) = paste("Veerg", 1:10, sep = "")
rownames(test) = paste("Rida", 1:20, sep = "")
Et visualiseerida maatriksit nii, nagu ta on, on vaja argumente cluster_rows=FALSE, cluster_cols=FALSE, sest vaikimisi on nende väärtus TRUE.
library(pheatmap)
pheatmap(test, cluster_rows=FALSE, cluster_cols=FALSE)
pheatmap(test, cluster_rows=FALSE)
Näeme, et veergude järjestus on muutunud: sarnased veerud asetsevad lähestikku.
Uuri täpsemalt ?pheatmap.
geom_raster. Sama töö teeb ära ka geom_tile, kuid see on üldisem (võimalik on määrata ka n-ö kastide suurusi) ja sellest tulenevalt nii ajaliselt kui mälu poolest kulukam.library(dplyr)
library(tidyr)
library(readr)
library(ggplot2)
library(viridis)
test_pikk = as.data.frame(test) %>%
mutate(Rida = rownames(test)) %>%
gather(key = Veerg, value = Vaartus, -Rida) %>%
mutate(Rida = parse_number(Rida), Veerg = parse_number(Veerg))
ggplot(test_pikk, aes(x = Veerg, y = Rida, fill = Vaartus)) +
geom_raster() +
scale_x_continuous(breaks = 1:10) +
scale_y_continuous(breaks = 1:20) +
theme(panel.grid.minor = element_blank()) +
scale_fill_viridis(option = "B")
Superheat - väga palju võimalusi joonise disainimiseks.
library(d3heatmap)
d3heatmap(test, Rowv = FALSE, Colv = TRUE, colors="YlOrRd")
library(plotly)
plot_ly(x=colnames(test), y=rownames(test), z = test, type = "heatmap")
library(highcharter)
hchart(test_pikk, "heatmap", hcaes(x = Veerg, y = Rida, value = Vaartus))